之前很多鐵人賽都有談過 docker ,想要很完整系統性的學 docker,都可以參考下方連結:
1. 30 天與鯨魚先生做好朋友
2. 那些關於 docker 你知道與不知道的事
想學更多的話,可以買書來看,這兩位作者的鐵人賽都有得獎且出版書籍了
1. Docker 實戰 6堂課:56個實驗動手做,掌握 Linux 容器核心技術
2. 30天與 Docker 做好朋友:跟鯨魚先生一同探索開發者的大平台
覺得 30 天內容太多的話,這邊會花2-3天講基本概念和簡單實作環境,至少之後在使用 airflow 的 docker 時不會太陌生~
Docker 於 2013 年推出,最初只是 dotCloud 公司的小型專案,後來加入了 Linux 基金會,快速崛起成為容器化技術的領先者。Docker 的主要優勢在於能夠將應用程式、程式庫、運行環境和配置打包成輕量、可攜、易於部署的容器,目前 Docker 已經是軟體開發和運營中的重要工具了。
Docker 的 Logo 就是一隻鯨魚背著許多貨櫃,貨櫃就是代表不同的環境容器
「我寫的程式在我的電腦上很正常運作,怎麼搬到你電腦上就問題一堆」
以前為了讓程式在各種不同的作業環境中運行,必須解決許多環境相容性的問題,自從有 Docker 之後,我們可以將應用程式環境容器化,從而大幅簡化了以往的環境相容性挑戰。只要能安裝 Docker Engine,接著將應用程式打包成「標準化單元」,就能確保應用程式在任何環境中順利運行。
可以看到下方表格和圖片,VirtualBox(右圖) 是從系統層級虛擬「作業系統及應用程式」,Docker(左圖) 是從作業系統層級虛擬「應用程式」,兩者相比,VirtualBox 更底層,耗費資源和時間也會更久,對於性能上也會消耗更多,但是如果很需要完整的作業系統使用,還是用虛擬機器像 VirtualBox 會比較適合,像是在 Windows 裡面要用 Mac 系統、或是 Mac 裡面要用 Linux 系統這類型的需求,但是如果只是安裝程式專案的環境,用容器 Docker 就可以了,用虛擬機反而浪費資源。
Docker | VirtualBox | |
---|---|---|
虛擬化名稱 | 容器(Container) | 虛擬機器(Virtual Machine) |
虛擬化層級 | 作業系統層級 | 系統層級 |
開啟花費時間 | 短(x秒) | 長(x分鐘) |
ref: docker 官方文章
映像檔也可稱作鏡像、模板,映像檔是只能讀取的檔案,可以快速並重複生產無數個容器(Container),通常會拿一個基本的 Base Image,再依照不同開發需求從 Base Image 去加工修改成不同的 Image,Base Image 可以從 DockerHub 下載取得。
容器是映像檔建立出來的執行實例,可以啟動、停止、刪除,每個容器之間都是相互獨立的環境。
熟悉 Git 的人可以理解成是 Repository,Repository是儲存程式碼的倉庫,Docker 的 Registry 是放置和儲存 Image 映像檔的倉庫,最常見的公有倉庫是 DockerHub。
什麼!Docker 也有 Repository?這樣要怎麼分,Docker 的 Repository 通常是放相關 Image 的不同版本,所以 Registry 也可以叫做倉庫(Repository)的倉庫
Ref:Difference between Docker registry and repository
誒~盡可能找了不同的舉例,希望對於這三個元素模糊的人可以清楚一些~
今天就先到這邊囉!明天會繼續講 docker 和用 Dockerfile 實作建立環境,後天就會介紹 Docker-compose 和用 Docker 建立 Airflow 的環境